package api

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"user-center/src/common"
	"user-center/src/model/request"
	"user-center/src/model/response"
	"user-center/src/service"
)

// TaskAdd
// @Tags        Task
// @Summary     添加任务
// @Description  添加任务
// @Param data body request.TaskAddRequest true "参数描述"
// @Router /task/add [post]
func TaskAdd(ctx *gin.Context) {
	req := &request.TaskAddRequest{}
	err := parsePostJsonRequest(ctx, req)
	if err != nil {
		return
	}
	//处理请求
	currentUser := service.GetUserCurrentInfo(ctx)
	res := service.TaskAdd(ctx, req, currentUser)
	ctx.JSON(http.StatusOK, res)
}

// TaskAll
// @Tags        Task
// @Summary     查看所有任务
// @Description  粗略查看
// @Param groupId query string true "群id"
// @Router /task/all [get]
func TaskAll(ctx *gin.Context) {
	res := &response.BaseResponse{}
	GroupChatId := ctx.Query("groupId")
	//处理请求
	currentUser := service.GetUserCurrentInfo(ctx)
	if currentUser == nil {
		res.ResponseWithError(common.NOT_LOGIN, "未登录")
		ctx.JSON(http.StatusOK, res)
	}
	ctx.JSON(http.StatusOK, service.TaskAll(ctx, GroupChatId))
}

// TaskInfo
// @Tags        Task
// @Summary     查看任务详细信息
// @Description  查看任务详细信息
// @Param groupId query string true "群id"
// @Router /task/info [get]
func TaskInfo(ctx *gin.Context) {
	res := &response.BaseResponse{}
	GroupChatId := ctx.Query("groupId")
	//处理请求
	currentUser := service.GetUserCurrentInfo(ctx)
	if currentUser == nil {
		res.ResponseWithError(common.NOT_LOGIN, "未登录")
		ctx.JSON(http.StatusOK, res)
	}
	ctx.JSON(http.StatusOK, service.TaskInfo(ctx, GroupChatId))
}

// TaskByUser
// @Tags        Task
// @Summary     用户的任务
// @Description  用户的任务
// @Param groupId query string true "群id"
// @Router /task/user [get]
func TaskByUser(ctx *gin.Context) {
	res := &response.BaseResponse{}
	GroupChatId := ctx.Query("groupId")
	//处理请求
	currentUser := service.GetUserCurrentInfo(ctx)
	if currentUser == nil {
		res.ResponseWithError(common.NOT_LOGIN, "未登录")
		ctx.JSON(http.StatusOK, res)
	}
	ctx.JSON(http.StatusOK, service.TaskByUser(ctx, GroupChatId, currentUser))
}

// TaskChange
// @Tags        Task
// @Summary     更改任务状态
// @Description  更改任务状态
// @Param req body request.TaskChangeRequest true "请求参数"
// @Router /task/change [get]
func TaskChange(ctx *gin.Context) {
	res := &response.BaseResponse{}
	req := &request.TaskChangeRequest{}
	err := parsePostJsonRequest(ctx, req)
	if err != nil {
		res.ResponseWithError(common.PARAMS_ERROR, "参数错误")
		ctx.JSON(http.StatusOK, res)
		return
	}
	//处理请求
	currentUser := service.GetUserCurrentInfo(ctx)
	if currentUser == nil {
		res.ResponseWithError(common.NOT_LOGIN, "未登录")
		ctx.JSON(http.StatusOK, res)
		return
	}
	ctx.JSON(http.StatusOK, service.TaskChange(ctx, req, currentUser))
}
